/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pantallas;

import clases.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Iterator;
import java.util.LinkedList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author DanielRH
 */
public class PantallaAgregarTrabajo extends javax.swing.JFrame {

    /**
     * Creates new form PantallaAgregarTrabajo
     */
    public PantallaAgregarTrabajo() {
        initComponents();
        pantPadre=null;
        trabajoActual=null;
        cargarMouseListener();
        piezaSeleccionada="";
        herramientaSeleccionada="";
        insumoSeleccionado="";
        maderaSeleccionada="";
        maquinaSeleccionada="";
        trabajoPrevioSeleccionado="";
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        txtNombreTrabajo = new javax.swing.JTextField();
        txtOperacionSeleccionada = new javax.swing.JTextField();
        btnSeleccionarOperacion = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        tablaPiezas = new javax.swing.JTable();
        btnAgregarPieza = new javax.swing.JButton();
        btnAgregarTrabajoPrevio = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        tablaTrabajosPrevios = new javax.swing.JTable();
        btnAceptar = new javax.swing.JButton();
        btnAgregarInsumos = new javax.swing.JButton();
        jScrollPane3 = new javax.swing.JScrollPane();
        tablaInsumos = new javax.swing.JTable();
        jScrollPane4 = new javax.swing.JScrollPane();
        tablaHerramientas = new javax.swing.JTable();
        jScrollPane5 = new javax.swing.JScrollPane();
        tablaMaquinas = new javax.swing.JTable();
        btnAgregarHerramienta = new javax.swing.JButton();
        btnAgregarMaquina = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();
        txtDuracionEstimada = new javax.swing.JTextField();
        jScrollPane6 = new javax.swing.JScrollPane();
        tablaMaderas = new javax.swing.JTable();
        btnAgregarMadera = new javax.swing.JButton();
        btnQuitarPieza = new javax.swing.JButton();
        btnQuitarMadera = new javax.swing.JButton();
        btnQuitarTrabajoPrevio = new javax.swing.JButton();
        btnQuitarHerramienta = new javax.swing.JButton();
        btnQuitarInsumo = new javax.swing.JButton();
        btnQuitarMaquina = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setResizable(false);

        jLabel1.setText("Nombre:");

        txtOperacionSeleccionada.setEditable(false);

        btnSeleccionarOperacion.setText("Operacion");
        btnSeleccionarOperacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSeleccionarOperacionActionPerformed(evt);
            }
        });

        tablaPiezas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane1.setViewportView(tablaPiezas);

        btnAgregarPieza.setText("Agregar Pieza");
        btnAgregarPieza.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarPiezaActionPerformed(evt);
            }
        });

        btnAgregarTrabajoPrevio.setText("Agregar Trabajo Previo");
        btnAgregarTrabajoPrevio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarTrabajoPrevioActionPerformed(evt);
            }
        });

        tablaTrabajosPrevios.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane2.setViewportView(tablaTrabajosPrevios);

        btnAceptar.setText("Aceptar");
        btnAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAceptarActionPerformed(evt);
            }
        });

        btnAgregarInsumos.setText("Agregar Insumos");
        btnAgregarInsumos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarInsumosActionPerformed(evt);
            }
        });

        tablaInsumos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane3.setViewportView(tablaInsumos);

        tablaHerramientas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane4.setViewportView(tablaHerramientas);

        tablaMaquinas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane5.setViewportView(tablaMaquinas);

        btnAgregarHerramienta.setText("Agregar Herramienta");
        btnAgregarHerramienta.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarHerramientaActionPerformed(evt);
            }
        });

        btnAgregarMaquina.setText("Agregar Maquina");
        btnAgregarMaquina.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarMaquinaActionPerformed(evt);
            }
        });

        jLabel2.setText("Duracion Estimada del Trabajo (Horas):");

        tablaMaderas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jScrollPane6.setViewportView(tablaMaderas);

        btnAgregarMadera.setText("Agregar Madera");
        btnAgregarMadera.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarMaderaActionPerformed(evt);
            }
        });

        btnQuitarPieza.setText("Quitar");
        btnQuitarPieza.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnQuitarPiezaActionPerformed(evt);
            }
        });

        btnQuitarMadera.setText("Quitar");
        btnQuitarMadera.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnQuitarMaderaActionPerformed(evt);
            }
        });

        btnQuitarTrabajoPrevio.setText("Quitar");
        btnQuitarTrabajoPrevio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnQuitarTrabajoPrevioActionPerformed(evt);
            }
        });

        btnQuitarHerramienta.setText("Quitar");
        btnQuitarHerramienta.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnQuitarHerramientaActionPerformed(evt);
            }
        });

        btnQuitarInsumo.setText("Quitar");
        btnQuitarInsumo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnQuitarInsumoActionPerformed(evt);
            }
        });

        btnQuitarMaquina.setText("Quitar");
        btnQuitarMaquina.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnQuitarMaquinaActionPerformed(evt);
            }
        });

        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtNombreTrabajo))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(btnAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 354, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(btnSeleccionarOperacion)
                                .addGap(18, 18, 18)
                                .addComponent(txtOperacionSeleccionada, javax.swing.GroupLayout.PREFERRED_SIZE, 260, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jLabel2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(txtDuracionEstimada))
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 354, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(btnAgregarTrabajoPrevio, javax.swing.GroupLayout.PREFERRED_SIZE, 176, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(5, 5, 5)
                                        .addComponent(btnQuitarTrabajoPrevio)))
                                .addGap(18, 18, 18)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 386, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(btnAgregarHerramienta, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(btnQuitarHerramienta))))
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 354, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(btnAgregarInsumos, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(7, 7, 7)
                                        .addComponent(btnQuitarInsumo)))
                                .addGap(18, 18, 18)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 386, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(btnAgregarMaquina, javax.swing.GroupLayout.PREFERRED_SIZE, 195, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(btnQuitarMaquina))))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(btnAgregarPieza, javax.swing.GroupLayout.PREFERRED_SIZE, 178, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(btnQuitarPieza)
                                .addGap(115, 115, 115)
                                .addComponent(btnAgregarMadera, javax.swing.GroupLayout.PREFERRED_SIZE, 193, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(btnQuitarMadera)))
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(txtNombreTrabajo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtOperacionSeleccionada, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnSeleccionarOperacion)
                    .addComponent(jLabel2)
                    .addComponent(txtDuracionEstimada, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(17, 17, 17)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnAgregarPieza)
                    .addComponent(btnAgregarMadera)
                    .addComponent(btnQuitarPieza)
                    .addComponent(btnQuitarMadera))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(25, 25, 25)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(btnAgregarTrabajoPrevio)
                            .addComponent(btnAgregarHerramienta)
                            .addComponent(btnQuitarTrabajoPrevio)
                            .addComponent(btnQuitarHerramienta))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jScrollPane4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnAgregarInsumos)
                    .addComponent(btnAgregarMaquina)
                    .addComponent(btnQuitarInsumo)
                    .addComponent(btnQuitarMaquina))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                    .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 106, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnAceptar)
                    .addComponent(btnCancelar))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnSeleccionarOperacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSeleccionarOperacionActionPerformed
        // TODO add your handling code here:
        PantallaOperaciones pantO=new PantallaOperaciones();
        pantO.setPadre(this);
        pantO.setVisible(true);
    }//GEN-LAST:event_btnSeleccionarOperacionActionPerformed

    private void btnAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAceptarActionPerformed
        // TODO add your handling code here:
        if(txtNombreTrabajo.getText().compareTo("")==0)
        {
            JOptionPane.showMessageDialog(getContentPane(),"Debe ingresar el nombre del Trabajo","Error",JOptionPane.ERROR_MESSAGE);
        }
        else
        {
            if(trabajoActual==null)
            {
                trabajoActual=new Trabajo();
            }
            trabajoActual.setNombre(txtNombreTrabajo.getText());
            if(txtOperacionSeleccionada.getText().compareTo("")!=0)
            {
                trabajoActual.setOperacion(new Operacion(txtOperacionSeleccionada.getText()));
            }
            if(txtDuracionEstimada.getText().compareTo("")!=0)
            {
                trabajoActual.setDuracionEstimada1Mueble(Integer.parseInt(txtDuracionEstimada.getText()));
            }
            if(pantPadre!=null)
            {
                pantPadre.agregarNuevoTrabajo(trabajoActual);
                this.dispose();
            }
            else
            {
                JOptionPane.showMessageDialog(getContentPane(),"No hay ninguna pantalla establecida como padre.","Error",JOptionPane.ERROR_MESSAGE);
            }
        }
    }//GEN-LAST:event_btnAceptarActionPerformed

    private void btnAgregarPiezaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarPiezaActionPerformed
        // TODO add your handling code here:
        
        PantallaAgregarPieza pantP=new PantallaAgregarPieza(this, true);
        pantP.setMuebleActual(pantPadre.getMuebleActual());
        pantP.setVisible(true);
    }//GEN-LAST:event_btnAgregarPiezaActionPerformed

    private void btnAgregarTrabajoPrevioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarTrabajoPrevioActionPerformed
        // TODO add your handling code here:
        PantallaAgregarTrabajoPrevio pantTP=new PantallaAgregarTrabajoPrevio(this, true);
        pantTP.setMuebleActual(pantPadre.getMuebleActual());
        pantTP.setVisible(true);
    }//GEN-LAST:event_btnAgregarTrabajoPrevioActionPerformed

    private void btnAgregarInsumosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarInsumosActionPerformed
        // TODO add your handling code here:
        PantallaAgregarInsumo pantAR=new PantallaAgregarInsumo(this, true);
        pantAR.setVisible(true);
    }//GEN-LAST:event_btnAgregarInsumosActionPerformed

    private void btnAgregarHerramientaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarHerramientaActionPerformed
        // TODO add your handling code here:
        PantallaAgregarHerramienta pantH=new PantallaAgregarHerramienta(this, true);
        pantH.setVisible(true);
    }//GEN-LAST:event_btnAgregarHerramientaActionPerformed

    private void btnAgregarMaquinaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarMaquinaActionPerformed
        // TODO add your handling code here:
        PantallaAgregarMaquina pantMQ=new PantallaAgregarMaquina(this, true);
        pantMQ.setVisible(true);
    }//GEN-LAST:event_btnAgregarMaquinaActionPerformed

    private void btnAgregarMaderaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarMaderaActionPerformed
        // TODO add your handling code here:
        PantallaAgregarMadera pantMD=new PantallaAgregarMadera(this, true);
        pantMD.setVisible(true);
    }//GEN-LAST:event_btnAgregarMaderaActionPerformed

    private void btnQuitarPiezaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarPiezaActionPerformed
        // TODO add your handling code here:
        if(piezaSeleccionada.compareTo("")==0)
        {
            JOptionPane.showMessageDialog(getContentPane(),"No se seleccionó ninguna pieza.","Error",JOptionPane.ERROR_MESSAGE);
        }
        else
        {
            PiezaConCantidad aEliminar=null;
            LinkedList listaActual=trabajoActual.getPiezasQueIntervienen();
            Iterator iter = listaActual.iterator();
            while(iter.hasNext())
            {
                PiezaConCantidad aux = (PiezaConCantidad)iter.next();
                if(aux.getActual().getNombre().compareTo(piezaSeleccionada)==0)
                {
                    aEliminar=aux;
                }
            }
            listaActual.removeFirstOccurrence(aEliminar);
            trabajoActual.setPiezasQueIntervienen(listaActual);
            actualizarTablaPiezas();
            piezaSeleccionada="";
        }
    }//GEN-LAST:event_btnQuitarPiezaActionPerformed

    private void btnQuitarMaderaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarMaderaActionPerformed
        // TODO add your handling code here:
        if(maderaSeleccionada.compareTo("")==0)
        {
            JOptionPane.showMessageDialog(getContentPane(),"No se seleccionó ninguna madera.","Error",JOptionPane.ERROR_MESSAGE);
        }
        else
        {
            MaderaConCantidad aEliminar=null;
            LinkedList listaActual=trabajoActual.getRequerimientoMadera();
            Iterator iter = listaActual.iterator();
            while(iter.hasNext())
            {
                MaderaConCantidad aux = (MaderaConCantidad)iter.next();
                if(aux.getActual().getNombre().compareTo(maderaSeleccionada)==0)
                {
                    aEliminar=aux;
                }
            }
            listaActual.removeFirstOccurrence(aEliminar);
            trabajoActual.setRequerimientoMadera(listaActual);
            actualizarTablaMaderas();
            maderaSeleccionada="";
        }
    }//GEN-LAST:event_btnQuitarMaderaActionPerformed

    private void btnQuitarTrabajoPrevioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarTrabajoPrevioActionPerformed
        // TODO add your handling code here:
        if(trabajoPrevioSeleccionado.compareTo("")==0)
        {
            JOptionPane.showMessageDialog(getContentPane(),"No se seleccionó ningún trabajo previo.","Error",JOptionPane.ERROR_MESSAGE);
        }
        else
        {
            Trabajo aEliminar=null;
            LinkedList listaActual=trabajoActual.getTrabajosPrevios();
            Iterator iter = listaActual.iterator();
            while(iter.hasNext())
            {
                Trabajo aux = (Trabajo)iter.next();
                if(aux.getNombre().compareTo(trabajoPrevioSeleccionado)==0)
                {
                    aEliminar=aux;
                }
            }
            listaActual.removeFirstOccurrence(aEliminar);
            trabajoActual.setTrabajosPrevios(listaActual);
            actualizarTablaTrabajosPrevios();
            trabajoPrevioSeleccionado="";
        }
    }//GEN-LAST:event_btnQuitarTrabajoPrevioActionPerformed

    private void btnQuitarHerramientaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarHerramientaActionPerformed
        // TODO add your handling code here:
        if(herramientaSeleccionada.compareTo("")==0)
        {
            JOptionPane.showMessageDialog(getContentPane(),"No se seleccionó ninguna herramienta.","Error",JOptionPane.ERROR_MESSAGE);
        }
        else
        {
            HerramientaConCantidad aEliminar=null;
            LinkedList listaActual=trabajoActual.getRequerimientoHerramientas();
            Iterator iter = listaActual.iterator();
            while(iter.hasNext())
            {
                HerramientaConCantidad aux = (HerramientaConCantidad)iter.next();
                if(aux.getActual().getNombre().compareTo(herramientaSeleccionada)==0)
                {
                    aEliminar=aux;
                }
            }
            listaActual.removeFirstOccurrence(aEliminar);
            trabajoActual.setRequerimientoHerramientas(listaActual);
            actualizarTablaHerramientas();
            herramientaSeleccionada="";
        }
    }//GEN-LAST:event_btnQuitarHerramientaActionPerformed

    private void btnQuitarInsumoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarInsumoActionPerformed
        // TODO add your handling code here:
        if(insumoSeleccionado.compareTo("")==0)
        {
            JOptionPane.showMessageDialog(getContentPane(),"No se seleccionó ningún insumo.","Error",JOptionPane.ERROR_MESSAGE);
        }
        else
        {
            InsumoConCantidad aEliminar=null;
            LinkedList listaActual=trabajoActual.getRequerimientosInsumos();
            Iterator iter = listaActual.iterator();
            while(iter.hasNext())
            {
                InsumoConCantidad aux = (InsumoConCantidad)iter.next();
                if(aux.getActual().getNombre().compareTo(insumoSeleccionado)==0)
                {
                    aEliminar=aux;
                }
            }
            listaActual.removeFirstOccurrence(aEliminar);
            trabajoActual.setRequerimientosInsumos(listaActual);
            actualizarTablaInsumos();
            insumoSeleccionado="";
        }
    }//GEN-LAST:event_btnQuitarInsumoActionPerformed

    private void btnQuitarMaquinaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnQuitarMaquinaActionPerformed
        // TODO add your handling code here:
        if(maquinaSeleccionada.compareTo("")==0)
        {
            JOptionPane.showMessageDialog(getContentPane(),"No se seleccionó ninguna máquina.","Error",JOptionPane.ERROR_MESSAGE);
        }
        else
        {
            Maquina aEliminar=null;
            LinkedList listaActual=trabajoActual.getRequerimientoMaquinas();
            Iterator iter = listaActual.iterator();
            while(iter.hasNext())
            {
                Maquina aux = (Maquina)iter.next();
                if(aux.getNombre().compareTo(maquinaSeleccionada)==0)
                {
                    aEliminar=aux;
                }
            }
            listaActual.removeFirstOccurrence(aEliminar);
            trabajoActual.setRequerimientoMaquinas(listaActual);
            actualizarTablaMaquinas();
            maquinaSeleccionada="";
        }
    }//GEN-LAST:event_btnQuitarMaquinaActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        // TODO add your handling code here:
        this.dispose();
    }//GEN-LAST:event_btnCancelarActionPerformed

    /**
     * @param args the command line arguments
     */
    
    public void cargarTodosLosDatos()
    {
        if(trabajoActual!=null)
        {
            txtNombreTrabajo.setText(trabajoActual.getNombre());
            txtDuracionEstimada.setText(""+trabajoActual.getDuracionEstimada1Mueble());
            if(trabajoActual.getOperacion()!=null)
            {
                txtOperacionSeleccionada.setText(trabajoActual.getOperacion().getNombre());
            }
            actualizarTablaHerramientas();
            actualizarTablaInsumos();
            actualizarTablaMaderas();
            actualizarTablaMaquinas();
            actualizarTablaPiezas();
            actualizarTablaTrabajosPrevios();
        }
    }
    
    public void setOperacionSeleccionada(String oper)
    {
        txtOperacionSeleccionada.setText(oper);
    }
    
    public void setFramePadre(PantallaTrabajos padre)
    {
        pantPadre=padre;
    }
    
    public void setTrabajoActual(Trabajo trabajo)
    {
        trabajoActual=trabajo;
        cargarTodosLosDatos();
    }
    
    private void actualizarTablaMaderas()
    {
        LinkedList listaMaderasConCantidad=trabajoActual.getRequerimientoMadera();
        String nombresColumnas[] = {"Maderas","Cantidad"};
        maderasConCantidadTablaModel = new DefaultTableModel(nombresColumnas,0);
        Iterator iter = listaMaderasConCantidad.iterator();
        while(iter.hasNext())
        {
            MaderaConCantidad aux = (MaderaConCantidad)iter.next();
            String datosFila[] = {aux.getActual().getNombre(),aux.getCantidad()+""};
            maderasConCantidadTablaModel.addRow(datosFila);
            
        }
        tablaMaderas.setModel(maderasConCantidadTablaModel);
    }
    
    private void actualizarTablaTrabajosPrevios()
    {
        LinkedList listaTrabajosPrevios=trabajoActual.getTrabajosPrevios();
        String nombresColumnas[] = {"Trabajos Previos"};
        trabajosPreviosTablaModel = new DefaultTableModel(nombresColumnas,0);
        Iterator iter = listaTrabajosPrevios.iterator();
        while(iter.hasNext())
        {
            Trabajo aux = (Trabajo)iter.next();
            String datosFila[] = {aux.getNombre()};
            trabajosPreviosTablaModel.addRow(datosFila);
            
        }
        tablaTrabajosPrevios.setModel(trabajosPreviosTablaModel);
    }
    
    private void actualizarTablaHerramientas()
    {
        LinkedList listaHerramientasConCantidad=trabajoActual.getRequerimientoHerramientas();
        String nombresColumnas[] = {"Herramientas","Cantidad"};
        herramientasConCantidadTablaModel = new DefaultTableModel(nombresColumnas,0);
        Iterator iter = listaHerramientasConCantidad.iterator();
        while(iter.hasNext())
        {
            HerramientaConCantidad aux = (HerramientaConCantidad)iter.next();
            String datosFila[] = {aux.getActual().getNombre(),aux.getCantidad()+""};
            herramientasConCantidadTablaModel.addRow(datosFila);
            
        }
        tablaHerramientas.setModel(herramientasConCantidadTablaModel);
    }
    
    private void actualizarTablaInsumos()
    {
        LinkedList listaInsumosConCantidad=trabajoActual.getRequerimientosInsumos();
        String nombresColumnas[] = {"Insumos","Cantidad"};
        insumosConCantidadTablaModel = new DefaultTableModel(nombresColumnas,0);
        Iterator iter = listaInsumosConCantidad.iterator();
        while(iter.hasNext())
        {
            InsumoConCantidad aux = (InsumoConCantidad)iter.next();
            String datosFila[] = {aux.getActual().getNombre(),aux.getCantidad()+""};
            insumosConCantidadTablaModel.addRow(datosFila);
            
        }
        tablaInsumos.setModel(insumosConCantidadTablaModel);
    }
    
    private void actualizarTablaMaquinas()
    {
        LinkedList listaMaquinas=trabajoActual.getRequerimientoMaquinas();
        String nombresColumnas[] = {"Maquinas"};
        maquinasTablaModel = new DefaultTableModel(nombresColumnas,0);
        Iterator iter = listaMaquinas.iterator();
        while(iter.hasNext())
        {
            Maquina aux = (Maquina)iter.next();
            String datosFila[] = {aux.getNombre()};
            maquinasTablaModel.addRow(datosFila);
            
        }
        tablaMaquinas.setModel(maquinasTablaModel);
    }
    
    private void actualizarTablaPiezas()
    {
        LinkedList listaPiezasConCantidad=trabajoActual.getPiezasQueIntervienen();
        String nombresColumnas[] = {"Piezas","Cantidad"};
        piezasConCantidadTablaModel = new DefaultTableModel(nombresColumnas,0);
        Iterator iter = listaPiezasConCantidad.iterator();
        while(iter.hasNext())
        {
            PiezaConCantidad aux = (PiezaConCantidad)iter.next();
            String datosFila[] = {aux.getActual().getNombre(),aux.getCantidad()+""};
            piezasConCantidadTablaModel.addRow(datosFila);
            
        }
        tablaPiezas.setModel(piezasConCantidadTablaModel);
    }
    
    public void agregarNuevaMadera(MaderaConCantidad nueva)
    {
        if(trabajoActual==null)
        {
            trabajoActual=new Trabajo();
        }
        LinkedList listaDatos=trabajoActual.getRequerimientoMadera();
        boolean existe=false;
        Iterator iter = listaDatos.iterator();
        while(iter.hasNext())
        {
            MaderaConCantidad aux = (MaderaConCantidad)iter.next();
            if(aux.getActual().getNombre().compareTo(nueva.getActual().getNombre())==0)
            {
                existe=true;
            }
        }
        if(existe==false)
        {
            trabajoActual.getRequerimientoMadera().add(nueva);
        }
        
        actualizarTablaMaderas();
    }
    
    public void agregarNuevoTrabajoPrevio(Trabajo nuevo)
    {
        if(trabajoActual==null)
        {
            trabajoActual=new Trabajo();
        }
        
        LinkedList listaDatos=trabajoActual.getTrabajosPrevios();
        boolean existe=false;
        Iterator iter = listaDatos.iterator();
        while(iter.hasNext())
        {
            Trabajo aux = (Trabajo)iter.next();
            if(aux.getNombre().compareTo(nuevo.getNombre())==0)
            {
                existe=true;
            }
        }
        if(existe==false)
        {
            trabajoActual.getTrabajosPrevios().add(nuevo);
        }
        
        actualizarTablaTrabajosPrevios();
    }
    
    public void agregarNuevaHerramienta(HerramientaConCantidad nueva)
    {
        if(trabajoActual==null)
        {
            trabajoActual=new Trabajo();
        }
        
        LinkedList listaDatos=trabajoActual.getRequerimientoHerramientas();
        boolean existe=false;
        Iterator iter = listaDatos.iterator();
        while(iter.hasNext())
        {
            HerramientaConCantidad aux = (HerramientaConCantidad)iter.next();
            if(aux.getActual().getNombre().compareTo(nueva.getActual().getNombre())==0)
            {
                existe=true;
            }
        }
        if(existe==false)
        {
            trabajoActual.getRequerimientoHerramientas().add(nueva);
        }
        
        
        actualizarTablaHerramientas();
    }
    
    public void agregarNuevoInsumo(InsumoConCantidad nuevo)
    {
        if(trabajoActual==null)
        {
            trabajoActual=new Trabajo();
        }
        
        LinkedList listaDatos=trabajoActual.getRequerimientosInsumos();
        boolean existe=false;
        Iterator iter = listaDatos.iterator();
        while(iter.hasNext())
        {
            InsumoConCantidad aux = (InsumoConCantidad)iter.next();
            if(aux.getActual().getNombre().compareTo(nuevo.getActual().getNombre())==0)
            {
                existe=true;
            }
        }
        if(existe==false)
        {
            trabajoActual.getRequerimientosInsumos().add(nuevo);
        }
        
        actualizarTablaInsumos();
    }
    
    public void agregarNuevaMaquina(Maquina nueva)
    {
        if(trabajoActual==null)
        {
            trabajoActual=new Trabajo();
        }
        
        LinkedList listaDatos=trabajoActual.getRequerimientoMaquinas();
        boolean existe=false;
        Iterator iter = listaDatos.iterator();
        while(iter.hasNext())
        {
            Maquina aux = (Maquina)iter.next();
            if(aux.getNombre().compareTo(nueva.getNombre())==0)
            {
                existe=true;
            }
        }
        if(existe==false)
        {
            trabajoActual.getRequerimientoMaquinas().add(nueva);
        }
        
        actualizarTablaMaquinas();
    }
    
    public void agregarNuevaPieza(PiezaConCantidad nueva)
    {
        if(trabajoActual==null)
        {
            trabajoActual=new Trabajo();
        }
        
        LinkedList listaDatos=trabajoActual.getPiezasQueIntervienen();
        boolean existe=false;
        Iterator iter = listaDatos.iterator();
        while(iter.hasNext())
        {
            PiezaConCantidad aux = (PiezaConCantidad)iter.next();
            if(aux.getActual().getNombre().compareTo(nueva.getActual().getNombre())==0)
            {
                existe=true;
            }
        }
        if(existe==false)
        {
            trabajoActual.getPiezasQueIntervienen().add(nueva);
        }
        
        actualizarTablaPiezas();
    }
    
    public void cargarDatosDeUnTrabajo(Trabajo trabajo)
    {
        if(trabajoActual==null)
        {
            trabajoActual=new Trabajo();
        }
        trabajoActual=trabajo;
        txtNombreTrabajo.setText(trabajoActual.getNombre());
        if(trabajoActual.getOperacion()!=null)
        {
            txtOperacionSeleccionada.setText(trabajoActual.getOperacion().getNombre());
        }
        txtDuracionEstimada.setText(trabajoActual.getDuracionEstimada1Mueble()+"");
        actualizarTablaHerramientas();
        actualizarTablaInsumos();
        actualizarTablaMaderas();
        actualizarTablaMaquinas();
        actualizarTablaPiezas();
        actualizarTablaTrabajosPrevios();
    }
    
    
    private void cargarMouseListener()
    {
        MouseAdapter adaptadorMouse=new MouseAdapter()
           {@Override
           public void mouseClicked(MouseEvent e) 
              {
                 int fila = tablaHerramientas.rowAtPoint(e.getPoint());
                 int columna = tablaHerramientas.columnAtPoint(e.getPoint());
                 if ((fila > -1) && (columna > -1))
                 {
                     herramientaSeleccionada=tablaHerramientas.getModel().getValueAt(fila, 0)+"";
                 }
              }
           };
        
        tablaHerramientas.addMouseListener(adaptadorMouse);
        
        adaptadorMouse=new MouseAdapter()
           {@Override
           public void mouseClicked(MouseEvent e) 
              {
                 int fila = tablaInsumos.rowAtPoint(e.getPoint());
                 int columna = tablaInsumos.columnAtPoint(e.getPoint());
                 if ((fila > -1) && (columna > -1))
                 {
                     insumoSeleccionado=tablaInsumos.getModel().getValueAt(fila, 0)+"";
                 }
              }
           };
        
        tablaInsumos.addMouseListener(adaptadorMouse);
        
        adaptadorMouse=new MouseAdapter()
           {@Override
           public void mouseClicked(MouseEvent e) 
              {
                 int fila = tablaMaderas.rowAtPoint(e.getPoint());
                 int columna = tablaMaderas.columnAtPoint(e.getPoint());
                 if ((fila > -1) && (columna > -1))
                 {
                     maderaSeleccionada=tablaMaderas.getModel().getValueAt(fila, 0)+"";
                 }
              }
           };
        
        tablaMaderas.addMouseListener(adaptadorMouse);
        
        adaptadorMouse=new MouseAdapter()
           {@Override
           public void mouseClicked(MouseEvent e) 
              {
                 int fila = tablaMaquinas.rowAtPoint(e.getPoint());
                 int columna = tablaMaquinas.columnAtPoint(e.getPoint());
                 if ((fila > -1) && (columna > -1))
                 {
                     maquinaSeleccionada=tablaMaquinas.getModel().getValueAt(fila, 0)+"";
                 }
              }
           };
        
        tablaMaquinas.addMouseListener(adaptadorMouse);
        
        adaptadorMouse=new MouseAdapter()
           {@Override
           public void mouseClicked(MouseEvent e) 
              {
                 int fila = tablaPiezas.rowAtPoint(e.getPoint());
                 int columna = tablaPiezas.columnAtPoint(e.getPoint());
                 if ((fila > -1) && (columna > -1))
                 {
                     piezaSeleccionada=tablaPiezas.getModel().getValueAt(fila, 0)+"";
                 }
              }
           };
        
        tablaPiezas.addMouseListener(adaptadorMouse);
        
        adaptadorMouse=new MouseAdapter()
           {@Override
           public void mouseClicked(MouseEvent e) 
              {
                 int fila = tablaTrabajosPrevios.rowAtPoint(e.getPoint());
                 int columna = tablaTrabajosPrevios.columnAtPoint(e.getPoint());
                 if ((fila > -1) && (columna > -1))
                 {
                     trabajoPrevioSeleccionado=tablaTrabajosPrevios.getModel().getValueAt(fila, 0)+"";
                 }
              }
           };
        
        tablaTrabajosPrevios.addMouseListener(adaptadorMouse);
        
    }
    
    
    private String herramientaSeleccionada;
    private String insumoSeleccionado;
    private String maderaSeleccionada;
    private String maquinaSeleccionada;
    private String piezaSeleccionada;
    private String trabajoPrevioSeleccionado;
    private DefaultTableModel trabajosPreviosTablaModel;
    private DefaultTableModel maderasConCantidadTablaModel;
    private DefaultTableModel piezasConCantidadTablaModel;
    private DefaultTableModel insumosConCantidadTablaModel;
    private DefaultTableModel herramientasConCantidadTablaModel;
    private DefaultTableModel maquinasTablaModel;
    private Trabajo trabajoActual;
    private PantallaTrabajos pantPadre;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAceptar;
    private javax.swing.JButton btnAgregarHerramienta;
    private javax.swing.JButton btnAgregarInsumos;
    private javax.swing.JButton btnAgregarMadera;
    private javax.swing.JButton btnAgregarMaquina;
    private javax.swing.JButton btnAgregarPieza;
    private javax.swing.JButton btnAgregarTrabajoPrevio;
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnQuitarHerramienta;
    private javax.swing.JButton btnQuitarInsumo;
    private javax.swing.JButton btnQuitarMadera;
    private javax.swing.JButton btnQuitarMaquina;
    private javax.swing.JButton btnQuitarPieza;
    private javax.swing.JButton btnQuitarTrabajoPrevio;
    private javax.swing.JButton btnSeleccionarOperacion;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane6;
    private javax.swing.JTable tablaHerramientas;
    private javax.swing.JTable tablaInsumos;
    private javax.swing.JTable tablaMaderas;
    private javax.swing.JTable tablaMaquinas;
    private javax.swing.JTable tablaPiezas;
    private javax.swing.JTable tablaTrabajosPrevios;
    private javax.swing.JTextField txtDuracionEstimada;
    private javax.swing.JTextField txtNombreTrabajo;
    private javax.swing.JTextField txtOperacionSeleccionada;
    // End of variables declaration//GEN-END:variables
}
